01-아키텍처이해및준비
Web/WAS 분리 아키텍처 이해 및 준비
Web 서버(Apache)와 WAS 서버(Tomcat)를 분리하는 3-Tier 아키텍처의 개념을 이해하고 준비 작업을 진행합니다.
Web/WAS 분리 아키텍처란?
기본 실습 vs 심화 실습 비교
기본 실습 (2-Tier):
사용자 → EC2 (Node.js) → RDS
웹+앱 서버
심화 실습 (3-Tier):
사용자 → EC2 (Apache) → EC2 (Tomcat) → RDS
웹 서버 WAS 서버
Web/WAS 분리의 장점
1. 역할 분담:
- Web 서버 (Apache): 정적 파일 처리 (HTML, CSS, 이미지)
- WAS 서버 (Tomcat): 동적 처리 (JSP, Servlet)
2. 성능 향상:
- 정적 파일은 Apache에서 빠르게 처리
- 동적 요청만 Tomcat으로 전달
3. 확장성:
- 각 서버를 독립적으로 확장 가능
- 부하에 따라 WAS만 추가 생성 가능
실습 아키텍처
네트워크 구조
인터넷
↓
Internet Gateway
↓
VPC (webapp-vpc)
├─ Public Subnet - Web 서버 영역
│ └─ EC2 (Apache) - 포트 80
│
└─ Private Subnet - WAS 서버 영역
└─ EC2 (Tomcat) - 포트 8080
요청 처리 흐름
1. 사용자가 웹 페이지 요청
2. Apache에서 요청 받음
3. 정적 파일(.html, .css) → Apache에서 직접 처리
4. 동적 파일(.jsp) → Tomcat으로 전달
5. Tomcat에서 처리 후 결과를 Apache로 반환
6. Apache가 최종 결과를 사용자에게 전송
1. WAS 서버용 EC2 인스턴스 생성
Private 서브넷에 Tomcat이 설치될 EC2를 생성합니다.
EC2 인스턴스 시작
- EC2 콘솔 → 인스턴스 시작 클릭
인스턴스 기본 설정
Name: webapp-was-server
Application and OS Images: Amazon Linux 2023 AMI
Instance type: t2.micro
Key pair: webapp-keypair (기존 키페어 사용)
네트워크 설정
VPC: webapp-vpc
Subnet: webapp-private-subnet-app 또는 webapp-private-subnet-db (Private 서브넷)
Auto-assign public IP: Disable (Private 서브넷이므로)
Security Group: 새로 생성
- Name:
webapp-was-sg - Description:
Security group for WAS server
WAS 보안 그룹 인바운드 규칙
규칙 1: SSH 접근
- Type: SSH
- Port: 22
- Source:
webapp-web-sg(Web 서버에서만 접근)
규칙 2: Tomcat 접근
- Type: Custom TCP
- Port: 8080
- Source:
webapp-web-sg(Web 서버에서만 접근)
규칙 3: AJP 연동
- Type: Custom TCP
- Port: 8009
- Source:
webapp-web-sg(Apache-Tomcat 연동용)
인스턴스 시작
"인스턴스 시작" 클릭
2. 기존 Web 서버 보안 그룹 수정
기존 Web 서버가 WAS 서버로 접근할 수 있도록 아웃바운드 규칙을 확인합니다.
Web 서버 보안 그룹 확인
- EC2 콘솔 → 보안 그룹 →
webapp-web-sg선택 - 아웃바운드 규칙 탭 확인
- 기본적으로 모든 아웃바운드가 허용되어 있으면 추가 설정 불필요
3. WAS 서버 접속 테스트
Private 서브넷의 WAS 서버는 Web 서버를 통해서만 접속 가능합니다.
Web 서버를 통한 점프 접속
# 1단계: Web 서버(Public)에 접속
ssh -i webapp-keypair.pem ec2-user@[Web서버-Public-IP]
# 2단계: Web 서버에서 WAS 서버(Private)로 접속
ssh ec2-user@[WAS서버-Private-IP]
# 예시: ssh ec2-user@10.0.2.10
WAS 서버 Private IP 확인 방법
- EC2 콘솔에서
webapp-was-server인스턴스 클릭 - 세부 정보 탭에서 프라이빗 IPv4 주소 확인
- 예:
10.0.2.45
4. 네트워크 연결 테스트
Web 서버에서 WAS 서버로 연결 테스트
# Web 서버에서 실행 - WAS 서버와의 네트워크 연결 확인
ping [WAS서버-Private-IP]
# 예시: ping 10.0.2.45
# Ctrl+C로 중지
포트 연결 테스트
# Web 서버에서 WAS 서버의 8080 포트 연결 테스트
telnet [WAS서버-Private-IP] 8080
# 아직 Tomcat이 설치되지 않았으므로 연결 실패가 정상
# "Connection refused" 메시지가 나오면 정상
# telnet 종료: Ctrl+] 후 quit
완료 체크리스트
중요 정보 정리
다음 단계에서 사용할 정보를 기록해두세요:
WAS 서버 정보:
- 인스턴스 이름:
webapp-was-server - Private IP:
10.0.x.x(실제 IP로 교체) - 보안 그룹:
webapp-was-sg - 접속 방법: Web 서버 → WAS 서버 (점프 접속)
아키텍처 준비 완료! Web/WAS 분리를 위한 네트워크 구조와 서버 준비가 완료되었습니다.
다음 단계: AWS EDU/Archive/조선대학교 AWS 멘토링/Week3-WAS-Deployment/WebWAS분리/02-WAS서버구성으로 이동하여 Tomcat과 간단한 JSP 애플리케이션을 설치합니다.
관련 문서: AWS EDU/Archive/조선대학교 AWS 멘토링/Week2-Dynamic-WebApp-Deployment/Week2-전체가이드